from django.shortcuts import render,redirect,HttpResponse
# 导入app01的models包
from app01 import models
# 分页组件封装
from app01.utils.pagination import Pagination
# form导入
from app01.utils.form import UserModelForm,PrettyModelForm,PrettyEditModelForm
from openpyxl import load_workbook

# Create your views here.
def depart_list(request):
    """ 部门列表 """
    # 去数据库中获取所有部门信息
    # 得到一个queryset的列表对象[对象,对象,对象]
    queryset = models.Department.objects.all()

    # 引用封装好的分页组件
    page_object = Pagination(request, queryset,page_size=5)
    context = {
        "queryset": page_object.page_queryset,
        "page_string": page_object.html(),
    }

    # 把queryset当作参数传递给前端，在前端的html中做渲染for循环queryset中的对象
    return render(request,'depart_list.html',context)

def depart_add(request):
    """ 新建部门 """
    if request.method == 'GET':
        return render(request,'depart_add.html')
    # 获取post表单数据
    title = request.POST.get("title")
    # 把得到的数据保存到数据库中
    models.Department.objects.create(title=title)
    # 通过导入redirect包功能重定向到部门列表页面
    return redirect("/depart/list/")

def depart_delete(request):
    """删除部门"""
    # 通过GET方式获取要删除的ID
    # href="/depart/delete/?nid={{ obj.id }}
    nid = request.GET.get("nid")
    # 删除，通过Department函数找到要删除的ID
    models.Department.objects.filter(id=nid).delete()

    # 重定向到部门列表
    return redirect("/depart/list/")

def depart_edit(request,nid):
    """修改部门"""
    if request.method == 'GET':
        # 点击编辑事件跳转到edit页面
        # http://localhost:8000/depart/int(id)/edit/
        # 也就是说通过url链接把数据库中的ID值带过来
        row_object = models.Department.objects.filter(id=nid).first()
        # print(row_object.id,row_object.title)
        # 把值当做参数传递到edit页面
        return render(request,'depart_edit.html',{'row_object':row_object})

    # 提交按钮触发POST请求，获得需要更新的数据
    title = request.POST.get("title")
    # 根据ID找到数据库中的数据并更新
    # 如有多个值需要修改在.update(title=title)括号中添加
    models.Department.objects.filter(id=nid).update(title=title)
    # 重定向到list页面
    return redirect("/depart/list/")

def depart_multi(request):
    """批量上传EXCEL文件"""
    # 1,获取用户上传的文件对象
    file_object = request.FILES.get("exc")
    # print(file_object,type(file_object))

    # 2，将获取的对象传递给openpyxl，由openpyxl读取文件的内容
    wb = load_workbook(file_object)
    sheet = wb.worksheets[0]

    # cell = sheet.cell(1,1)
    # print(cell)
    # print(cell.value)

    # 3，循环获取每一行数据
    for row in sheet.iter_rows(min_row=2):
        text = row[0].value
        # print(text)
        exists = models.Department.objects.filter(title=text).exists()
        if not exists:
            models.Department.objects.create(title=text)

    return redirect("/depart/list/")
